// https://www.bilibili.com/video/BV17Q4y1P7n9?p=8

// 体验go代码

/**
注释
1.
2.
3.
*/

package main

// 导入语句
import "fmt"

// 函数外 防止标识符(变量、常亮) 的声明 (不是不能，是避免，会污染其他包的代码)
// 这里定义变量，是全局变量

func main() {
	// 体验
	fmt.Println("hello world", "srx")

	const a = 1
	fmt.Println("a=", a)

	// -----------------------------------------------

	//
	//var name learn_string.go

	// 批量声明变量
	var (
		name string
		age int
		isOk bool
	)

	name = "理想"
	age = 16
	isOk = true

	// Go语言中`非全局`变量声明必须使用，不使用就编译不过去
	fmt.Println(name, age, isOk)

	// 占位符 打印函数(结尾不会换行)
	fmt.Printf("name:%s", name)

	// 结尾不会换行)
	fmt.Print("age")

	fmt.Println(isOk)

	fmt.Printf("\n11111\n")

	// 声明变量 同时 赋值 (不推荐这种写法)
	var s1 string = "srxboys"
	fmt.Println("s1=", s1)

	// 类型推导 (推荐)
	var s2 = "learn go"
	fmt.Println("s2=", s2)

	// 短变量 声明(只能在 函数声明，不可以声明在 全局变量)
	s3 := "hello-world" // ===   var s3 ="hello-world"
	fmt.Println(s3)

	// 匿名变量 (不占用空，不存在重复声明)
	x, _ := foo(10, "aa")
	_, y := foo(20, "bb")
	fmt.Println(x, y)
}

func foo(a int, b string) (int, string) {
	return a + 10, b + ".com"
}
